An Empirical Study of Amorphous Slicing as a Program Comprehension Support Tool
نویسندگان
چکیده
Amorphous program slicing relaxes the syntactic constraint of traditional slicing and can therefore produce considerably smaller slices. This simplification power can be used to answer questions a software engineer might have about a program by first augmenting the program to make the question explicit and then slicing out an answer. One benefit of this technique is that the answer is in the form of a program and thus, in a language that the software engineer understands well. To test the usefulness of amorphous slicing in answering such questions, the question of array access safety is considered. A safety slice, an amorphous slice of an augmented program, is used to guide a software engineer to potential array bounds violations. An experiment was conducted to determine whether the safety slice was an effective aid to an engineer. Sev enty six subjects participated in the controlled experiment. For experiments involving groups of novice programmers, the null hypothesis could not be rejected, and so it was not possible to conclude that amorphous slicing provided assisted such groups. However, for more experienced groups, the experimental subjects who were able to consult † Computer Science Department, Loyola College in Maryland, 4501 North Charles Street, Baltimore, MD 21210 {binkley,lraszews,csmith}@cs.loyola.edu. Supported by National Science Foundation grant CCR-9803665. ‡ Department of Mathematical and Computing Sciences, Goldsmiths College, University of London, New Cross, London SE14 6NW [email protected] Supported by Engineering and Physical Sciences Research Council grants GR/M58719 and GR/M78083. Copyright © 1999 by David Binkley. All rights reserved. amorphous slices significantly outperformed the control group. The study lends empirical support to the assertion that amorphous slicing is an assistant to program comprehension. Ke ywords: slicing, empirical validation, amorphous slicing, arrays
منابع مشابه
Amorphous program slicing
Traditional, syntax-preserving program slicing simplifies a program by deleting components (e.g., statements and predicates) that do not affect a computation of interest. Amorphous slicing removes the limitation to component deletion as the only means of simplification, while retaining the semantic property that a slice preserves the selected behaviour of interest from the original program. Thi...
متن کاملEnabling Certification through an Integrated Comprehension Approach
ion, by virtue of producing an abstract model similar to the program model, works in a manner that facilitates bottom-up comprehension. It thus forms a perfect foil for slicing by (automatically) providing program models to the analyst at specified levels of abstraction, that can be used to form the hypotheses upon which the slicing criteria are based upon. Further, the abstracted model can be ...
متن کاملAn Analysis of the Current Program Slicing and Algorithmic Debugging Based Techniques
slice provides additional information: it says for each statement in the slice if the condition c =‘\n’ will be satisfied or not. (1) read(text); [false] (2) read(n); [false] (3) lines = 1; [c!=‘\n’] (4) chars = 1; [false] (5) subtext = ""; [false] (6) c = getChar(text); [false] (7) while (c != ‘\eof’) [false] (8) if (c == ‘\n’) [false] (9) then lines = lines + 1; [false] (10) chars = chars + 1...
متن کاملAn Overview of the Indus Framework for Analysis and Slicing of Concurrent Java Software
Program slicing is a program analysis and transformation technique that has been successfully applied in a wide range of applications including program comprehension, debugging, maintenance, testing, and verification. However, there are only a few full-featured implementations of program slicing that are available for industrial applications or academic research. In particular, very little tool...
متن کاملProgram Slicing via FermaT Transformations
In this paper we give a brief introduction to the foundations of WSL transformation theory and describe how the concept of program slicing can be formalised in the theory. This formalism naturally lends itself to several generalisations including amorphous slicing and conditioned slicing. One novel generalisation is “semantic slicing” which combines slicing and abstraction to a specification. I...
متن کامل